package ui.sheet;

import org.apache.pivot.serialization.SerializationException;
import org.apache.pivot.util.Vote;
import org.apache.pivot.util.concurrent.TaskExecutionException;
import org.apache.pivot.wtk.Border;
import org.apache.pivot.wtk.BoxPane;
import org.apache.pivot.wtk.Button;
import org.apache.pivot.wtk.ButtonPressListener;
import org.apache.pivot.wtk.ImageView;
import org.apache.pivot.wtk.Label;
import org.apache.pivot.wtk.Orientation;
import org.apache.pivot.wtk.PushButton;
import org.apache.pivot.wtk.Separator;
import org.apache.pivot.wtk.Sheet;
import org.apache.pivot.wtk.TablePane;
import org.apache.pivot.wtk.TextInput;
import org.apache.pivot.wtk.TextInputContentListener;
import org.apache.pivot.wtk.content.ButtonData;
import org.apache.pivot.wtk.media.Image;
import org.apache.pivot.xml.Element;

/**
 * Cette classe correspond au pop-up apparaissant lorsque l'utilisateur souhaite exporter une partition au format XML Drummer
 * 
 * @author Guillaume
 */
public class AsciiImportSheet extends Sheet{
	private Double delaiNotes;
	private Double delaiMusique;
	private String emplacementSortie;
	private PushButton buttonOk;
	
	/**
	 * Constructeur de la pop-up
	 * 
	 * @param parent : Le container de la pop-up, indispensable pour pouvoir y stocker des elements.
	 * @throws SerializationException 
	 */
	public AsciiImportSheet(){
		// Creation de la boite englobante
		BoxPane box = new BoxPane();
		
		Border border = new Border(box);
		this.setContent(border);
		
		box.getStyles().put("padding", 10);
		box.getStyles().put("backgroundColor", "#FFFFFF");
		box.setPreferredHeight(160);
		box.setPreferredWidth(350);
		box.getStyles().put("fill", "true");
		box.setOrientation(Orientation.VERTICAL);
		
		// Creation du titre
		Label labelTitre = new Label("Export XML Drummer :");
		box.add(labelTitre);
		box.add(new Separator());
		
		// Ajout du formulaire dans la boite englobante
		box.add(this.createForm());
		
		// Ajout des boutons de controles
		box.add(createControlButtons());
	}
	
	public TablePane createForm(){
		// Creation du formulaire
		TablePane formulaire = new TablePane();
		
		formulaire.getColumns().add(new TablePane.Column(100));
		formulaire.getColumns().add(new TablePane.Column(1, true));

		formulaire.getRows().add(new TablePane.Row(22));
		formulaire.getRows().add(new TablePane.Row(5));
		formulaire.getRows().add(new TablePane.Row(22));
		formulaire.getRows().add(new TablePane.Row(5));
		formulaire.getRows().add(new TablePane.Row(22));
		
		//Creation des elements du formulaire		
		Label labelDebutNote = new Label("Delai note");
		TextInput imputDebutNote = new TextInput();
		
		Label labelDebutMusique = new Label("Delai musique");
		TextInput imputDebutMusique = new TextInput();
		
		Label labelEmplacementExport = new Label("Emplacement");
		BoxPane boxEmplacementExport = new BoxPane();
		
		TextInput imputEmplacementExport = new TextInput();
		imputEmplacementExport.setEnabled(false);
		PushButton buttonEmplacementExport = new PushButton();
				
		try {
			buttonEmplacementExport.setButtonData(new ButtonData(Image.load(getClass().getResource("/browser.png"))));
		} catch (TaskExecutionException e) {
			e.printStackTrace();
		}

		boxEmplacementExport.add(imputEmplacementExport);
		boxEmplacementExport.add(buttonEmplacementExport);

		// Creation des evenements sur les boutons
		imputDebutMusique.getTextInputContentListeners().add(new TextInputContentListener() {
			public void textRemoved(TextInput arg0, int arg1, int arg2) {}
			public void textInserted(TextInput arg0, int arg1, int arg2) {}
			
			public void textChanged(TextInput arg0) {
				// TODO Auto-generated method stub
				System.out.println("hehe");
			}

			public void removeTextVetoed(TextInput arg0, Vote arg1) {}
			public Vote previewRemoveText(TextInput arg0, int arg1, int arg2) {return null;}
			public Vote previewInsertText(TextInput arg0, CharSequence arg1, int arg2) {return null;}
			public void insertTextVetoed(TextInput arg0, Vote arg1) {}
		});
		
		
		// Ajout des elements dans le formulaire
		formulaire.getRows().get(0).add(labelDebutNote);
		formulaire.getRows().get(0).add(imputDebutNote);

		formulaire.getRows().get(1).add(new Label());
		
		formulaire.getRows().get(2).add(labelDebutMusique);
		formulaire.getRows().get(2).add(imputDebutMusique);
		
		formulaire.getRows().get(3).add(new Label());
		
		formulaire.getRows().get(4).add(labelEmplacementExport);
		formulaire.getRows().get(4).add(boxEmplacementExport);
		
		// Elements de mise en forme
		
		formulaire.getStyles().put("padding", 2);
		
		imputDebutNote.setPreferredHeight(22);
		imputDebutMusique.setPreferredHeight(22);
		imputEmplacementExport.setPreferredHeight(22);
		imputEmplacementExport.setPreferredWidth(198);
		
		labelDebutNote.getStyles().put("padding", "{top:6}");
		labelDebutMusique.getStyles().put("padding", "{top:6}");
		labelEmplacementExport.getStyles().put("padding", "{top:6}");
		
		return formulaire;
	}
	
	public BoxPane createControlButtons(){
		//Ajout des boutons oki / cancel
		BoxPane boxControlButton = new BoxPane();
		buttonOk = new PushButton("OK");
		buttonOk.setEnabled(false);
		PushButton buttonCancel = new PushButton("Annuler");
		boxControlButton.add(buttonOk);		
		boxControlButton.add(buttonCancel);
		
		// Listeners des boutons
		buttonCancel.getButtonPressListeners().add(new ButtonPressListener() {
			public void buttonPressed(Button arg0) {
				close();
			}
		});
		
		buttonCancel.getButtonPressListeners().add(new ButtonPressListener() {
			public void buttonPressed(Button arg0) {
				close();
			}
		});
		
		// Mise en forme des boutons
		boxControlButton.getStyles().put("horizontalAlignment", "right");
		boxControlButton.getStyles().put("padding", "{top:5, right:2}");

		try {
			buttonOk.setStyles("{color: 4, backgroundColor: 14, borderColor: 12, disabledBackgroundColor: 10, disabledBorderColor: 7, padding: {top:3, left:4, bottom:3, right:4}, minimumAspectRatio: 3}");
			buttonCancel.setStyles("{color: 4, backgroundColor: 14, borderColor: 12, disabledBackgroundColor: 10, disabledBorderColor: 7, padding: {top:3, left:4, bottom:3, right:4}, minimumAspectRatio: 3}");
		} catch (SerializationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return boxControlButton;
	}
	
	public void formValidate(){
		System.out.print("�jdfgh�");
		if(delaiNotes != null && delaiMusique != null && emplacementSortie != null)
		{
			buttonOk.setEnabled(true);
		}
	}
}
